package com.jufanshare.myblog.service.tool.upload;

import com.jufanshare.myblog.common.dto.UploadPOJO;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

/**
 * @功能：文章上传
 * @开发者： 大BUG
 * @编写时间： 2019/2/14 13:35
 */
@Service
public class UploadServiceImpl implements UploadService {
    /**
     * 功能：上传图片
     * @param file 文件
     * @param savePath 服务器上上传文件的路径
     * @return 上传文件的 URL相对地址
     */
    @Override
    public UploadPOJO uploadImage(MultipartFile file, String savePath) throws IOException {
        UploadPOJO res=new UploadPOJO();
        if(file!=null){
            String fileName = file.getOriginalFilename();//获取文件名称
            String fileNameExtension = fileName.substring(fileName.lastIndexOf("."), fileName.length());//获取文件后缀
            String saveFileName= UUID.randomUUID().toString() + fileNameExtension;
            File uploadFile = new File(savePath, saveFileName);
            if(!uploadFile.getParentFile().exists()){//判断目标文件路径是否存在，不存在则创建文件夹
                boolean createDir = uploadFile.getParentFile().mkdirs();//创建目标文件夹
                if(createDir){
                    file.transferTo(uploadFile);
                    res.setSuccess(true);
                    res.setFile_path(saveFileName);//此处访问文件名即可，路径是外界传入，无需
                }else {
                    //目标路径文件夹创建失败
                    res.setSuccess(false);
                    res.setMsg("文件保存目标路径创建失败");
                }
            }else {
                file.transferTo(uploadFile);//目标路径存在时直接保存
                res.setSuccess(true);
                res.setFile_path(saveFileName);//此处访问文件名即可，路径是外界传入，无需
            }
        }
        return res;
    }
}
